﻿/*
 * Created by SharpDevelop.
 * User: CrOnO
 * Date: 31/10/2011
 * Time: 10:58 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using System.Data.SqlClient;
using Business_Entity;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Forms;

namespace DAOFactory
{
	/// <summary>
	/// Description of DAOAgenda.
	/// </summary>
	public class DAOAgenda
	{
		public DAOAgenda()
		{
		}
		
		public List<BEAgendaActividad> buscarActividades(BEEmpleado empleado, DateTime fecha)
		{
			try
			{
				SqlCommand cmd = new SqlCommand("RRHH_BUSCAR_ACTIVIDADES_L", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = empleado.IdEmpleado;
				cmd.Parameters.Add("@FECHA", SqlDbType.DateTime);
				cmd.Parameters["@FECHA"].Value = fecha;
				
				SqlDataReader amd = cmd.ExecuteReader();
				
				List<BEAgendaActividad> lista = new List<BEAgendaActividad>();
				
				if (amd.HasRows) 
				{
					while(amd.Read())
					{
						try
						{
							BEAgendaActividad actividad = new BEAgendaActividad();
							actividad.IdAgendaActividad = int.Parse(amd[0].ToString());
							actividad.Fecha = DateTime.Parse(amd[1].ToString());
							actividad.HoraInicio = DateTime.Parse(amd[3].ToString());
							actividad.HoraFin = DateTime.Parse(amd[4].ToString());
							actividad.Actividad = amd[5].ToString();
							lista.Add(actividad);
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar actividades","Error");
							amd.Close();
							return null;						
						}
					}
					amd.Close();
					return lista;
				}
				else
				{
					amd.Close();
					return null;
				}
			}
			catch
			{
//				System.Windows.Forms.MessageBox.Show("Error al buscar actividades","Error");
				return null;	
			}
		}
		
		public List<BEAgendaActividad> buscarActividadesPasadas(BEEmpleado empleado, DateTime fecha)
		{
			try
			{
				SqlCommand cmd = new SqlCommand("RRHH_BUSCAR_ACTIVIDADES_PASADAS_L", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = empleado.IdEmpleado;
				cmd.Parameters.Add("@FECHA", SqlDbType.DateTime);
				cmd.Parameters["@FECHA"].Value = fecha;
				
				SqlDataReader amd = cmd.ExecuteReader();
				
				List<BEAgendaActividad> lista = new List<BEAgendaActividad>();
				
				if (amd.HasRows) 
				{
					while(amd.Read())
					{
						try
						{
							BEAgendaActividad actividad = new BEAgendaActividad();
							actividad.IdAgendaActividad = int.Parse(amd[0].ToString());
							actividad.Fecha = DateTime.Parse(amd[1].ToString());
							actividad.HoraInicio = DateTime.Parse(amd[3].ToString());
							actividad.HoraFin = DateTime.Parse(amd[4].ToString());
							actividad.Actividad = amd[5].ToString();
							lista.Add(actividad);
						}
						catch
						{
//							System.Windows.Forms.MessageBox.Show("Error al buscar actividades","Error");
							amd.Close();
							return null;						
						}
					}
					amd.Close();
					return lista;
				}
				else
				{
					amd.Close();
					return null;
				}
			}
			catch
			{
//				System.Windows.Forms.MessageBox.Show("Error al buscar actividades","Error");
				return null;	
			}
		}
		
		public List<BEAgendaActividad> buscarActividadesFuturas(BEEmpleado empleado, DateTime fecha)
		{
			try
			{
				SqlCommand cmd = new SqlCommand("RRHH_BUSCAR_ACTIVIDADES_FUTURAS_L", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = empleado.IdEmpleado;
				cmd.Parameters.Add("@FECHA", SqlDbType.DateTime);
				cmd.Parameters["@FECHA"].Value = fecha;
				
				SqlDataReader amd = cmd.ExecuteReader();
				
				List<BEAgendaActividad> lista = new List<BEAgendaActividad>();
				
				if (amd.HasRows) 
				{
					while(amd.Read())
					{
						try
						{
							BEAgendaActividad actividad = new BEAgendaActividad();
							actividad.IdAgendaActividad = int.Parse(amd[0].ToString());
							actividad.Fecha = DateTime.Parse(amd[1].ToString());
							actividad.HoraInicio = DateTime.Parse(amd[3].ToString());
							actividad.HoraFin = DateTime.Parse(amd[4].ToString());
							actividad.Actividad = amd[5].ToString();
							lista.Add(actividad);
						}
						catch
						{
//							System.Windows.Forms.MessageBox.Show("Error al buscar actividades","Error");
							amd.Close();
							return null;						
						}
					}
					amd.Close();
					return lista;
				}
				else
				{
					amd.Close();
					return null;
				}
			}
			catch
			{
//				System.Windows.Forms.MessageBox.Show("Error al buscar actividades","Error");
				return null;	
			}
		}
		
		public int eliminarActividad(BEAgendaActividad actividad)
		{
			int estadoTran = 0;
			
			try 
			{
				SqlCommand cmd = new SqlCommand("RRHH_ELIMINAR_ACTIVIDAD_L", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDAGENDAACTIVIDAD", SqlDbType.Int);
				cmd.Parameters["@IDAGENDAACTIVIDAD"].Value = actividad.IdAgendaActividad;
				cmd.Parameters.Add("@FECHA", SqlDbType.DateTime);
				cmd.Parameters["@FECHA"].Value = actividad.Fecha;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
			}
			catch
			{
//				System.Windows.Forms.MessageBox.Show("Error al eliminar actividades.","Error");
			}
			
			return estadoTran;
		}
	}
}
